/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package espe.ccsoft.dao;

import espe.ccsoft.models.Ejecucion;
import espe.ccsoft.models.Periodo;
import espe.ccsoft.orm.ORMBase;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;

/**
 *
 * @author Carlos
 */
public class EjecucionDao extends ORMBase<Ejecucion> {

    public final void insert(final Ejecucion ejecucion) throws SQLException, Exception {
        // Sentencia SQL para realizar la consulta a la BD:                                                                                              
        super.insertSql = "INSERT INTO EJECUCION ("
                + "CHO_ID, "
                + "DES_ID, "
                + "AYU_ID, "
                + "RUT_ID, "
                + "EJE_NUM, "
                + "EJE_FECHA, "
                + "EJE_HABILITACIONPROG, "
                + "EJE_UNIDADPROG, "
                + "EJE_HABILITACIONREAL, "
                + "EJE_UNIDADREAL, "
                + "EJE_HORAINICIOPROG, "
                + "EJE_HORAFINPROG, "
                + "EJE_HORAINICIOREAL, "
                + "EJE_HORAFINREAL, "
                + "EJE_INTERVALO, "
                + "EJE_TIEMPODESPACHO, "
                + "EJE_OBSERVACION "
                + ") VALUES( ?, ?, ?, ? , ?, ? , ?, ? , ?, ? , ?, ? , ?, ? , ?, ? , ?)";
        super.insert(new Object[]{
            null,
            null,
            null,
            ejecucion.getRutaId(),
            ejecucion.getNum(),
            ejecucion.getFecha(),
            ejecucion.getHabilitacionProg(),
            ejecucion.getUnidadProg(),
            null,
            null,
            ejecucion.getHoraInicioProg(),
            ejecucion.getHoraFinProg(),
            ejecucion.getHoraInicioReal(),
            ejecucion.getHoraFinReal(),
            ejecucion.getIntervalo(),
            ejecucion.getTiempoDespacho(),
            ejecucion.getObservacion(),});
    }

    public final void update(Ejecucion ejecucion) throws Exception {
        super.updateSql = "UPDATE EJECUCION SET "
                + "CHO_ID=?, "
                + "DES_ID=?, "
                + "AYU_ID=?, "
                + "RUT_ID=?, "
                + "EJE_NUM=?, "
                + "EJE_FECHA=?, "
                + "EJE_HABILITACIONPROG=?, "
                + "EJE_UNIDADPROG=?, "
                + "EJE_HABILITACIONREAL=?, "
                + "EJE_UNIDADREAL=?, "
                + "EJE_HORAINICIOPROG=?, "
                + "EJE_HORAFINPROG=?, "
                + "EJE_HORAINICIOREAL=?, "
                + "EJE_HORAFINREAL=?, "
                + "EJE_INTERVALO=?, "
                + "EJE_TIEMPODESPACHO=?, "
                + "EJE_OBSERVACION=? "
                + "WHERE EJE_ID=?";
        super.update(new Object[]{
            ejecucion.getChoferId(),
            ejecucion.getDespachoId(),
            ejecucion.getAyudanteId(),
            ejecucion.getRutaId(),
            ejecucion.getNum(),
            ejecucion.getFecha(),
            ejecucion.getHabilitacionProg(),
            ejecucion.getUnidadProg(),
            ejecucion.getHabilitacionReal(),
            ejecucion.getUnidadReal(),
            ejecucion.getHoraInicioProg(),
            ejecucion.getHoraFinProg(),
            ejecucion.getHoraInicioReal(),
            ejecucion.getHoraFinReal(),
            ejecucion.getIntervalo(),
            ejecucion.getTiempoDespacho(),
            ejecucion.getObservacion(),
            ejecucion.getId(),});
    }

    public final List<Ejecucion> findByDate(final Date date) throws Exception {
        super.findSomeSql = "SELECT * FROM EJECUCION WHERE EJE_FECHA=?";
        return super.findSome(new Object[]{date,});
    }

    @Override
    protected Ejecucion crearObjeto(ResultSet rs) throws SQLException {
        Ejecucion ejecucion = new Ejecucion();
        ejecucion.setId(rs.getInt("EJE_ID"));
        ejecucion.setChoferId(rs.getInt("CHO_ID"));
        ejecucion.setDespachoId(rs.getInt("DES_ID"));
        ejecucion.setAyudanteId(rs.getInt("AYU_ID"));
        ejecucion.setRutaId(rs.getInt("RUT_ID"));
        ejecucion.setNum(rs.getInt("EJE_NUM"));
        ejecucion.setFecha(rs.getDate("EJE_FECHA"));
        ejecucion.setHabilitacionProg(rs.getString("EJE_HABILITACIONPROG"));
        ejecucion.setUnidadProg(rs.getInt("EJE_UNIDADPROG"));
        ejecucion.setHabilitacionReal(rs.getString("EJE_HABILITACIONREAL"));
        ejecucion.setUnidadReal(rs.getInt("EJE_UNIDADREAL"));
        ejecucion.setHoraInicioProg(rs.getTime("EJE_HORAINICIOPROG"));
        ejecucion.setHoraFinProg(rs.getTime("EJE_HORAFINPROG"));
        ejecucion.setHoraInicioReal(rs.getTime("EJE_HORAINICIOREAL"));
        ejecucion.setHoraFinReal(rs.getTime("EJE_HORAFINREAL"));
        ejecucion.setIntervalo(rs.getTime("EJE_INTERVALO"));
        ejecucion.setTiempoDespacho(rs.getTime("EJE_TIEMPODESPACHO"));
        ejecucion.setObservacion(rs.getString("EJE_OBSERVACION"));
        return ejecucion;
    }

}
